Day 25 的 RLVR checkpoint 沒有通過晉級門檻,今天的實驗也沒有沿用那批 rollouts,而是換成另一種解決方法:先讓能力較強的模型示範如何解決,再讓較小的模型模仿它留下的答案與推導過程,這就是模型蒸餾的基本想法。
負責示範的模型通常叫 teacher,接收這些行為的較小模型則叫 student。傳統 knowledge distillation 常讓 student 模仿 teacher 經過 temperature 調整的輸出機率分布,也就是 soft targets;今天採用的 hard distillation 更直接,將 teacher 實際生成的一條回答當成固定 target,再用和 SFT 相同的 next-token loss 訓練。對 reasoning model 而言,推導、回頭檢查、語氣、格式和最後答案都會一起成為模仿對象。
這次拿來示範的回答,來自 DeepSeek-R1 與 Qwen3-235B-A22B 兩組公開 teacher traces。每道題先由模型留下完整回答,再用 final-answer verifier 排除最後答案錯誤的軌跡;只有通過者才進入後續資料切分。
有了這批通過 final-answer verifier 的解題軌跡,接下來就看 0.6B student 能從中學到多少。Qwen3-0.6B-Base 在 128 道開發集題目答對 58 題,蒸餾後答對 105 題,另外重新訓練的 RLVR control 是 91 題。
顯然蒸餾非常好用,我敢說某些開源模型開發者也同意我的論點,但這並非萬能。我們可以觀察到同一批題目裡,Base 總共輸出 9,391 個 tokens,蒸餾模型卻輸出 34,881 個,整批推論時間也從 17.00 分鐘增加到 56.56 分鐘。推理能力的確可被更新進權重,然而輸出長度也跟著膨脹,student 每次回答,仍必須負擔較長的推理軌跡下的推論成本。
資料篩選從固定版本的 12,000 筆數學題開始,先排除先前實驗看過的題目、正規化後的重複題、任一 teacher 最後答案錯誤,以及超過 1,024-token contract 的 trajectory,最後剩下 752 筆可用題目。這道 filter 只核對 final answer,沒有替中間每一步背書。
12,000 筆原始資料
→ 752 筆通過歷史暴露、重複、長度與 final-answer filter
→ 兩位 teachers 各用同一組 192 題訓練 student
→ 另以 32 題比較 teacher-forced calibration loss
→ 選定一個 distilled candidate 進入四模型評估
兩個 student 都從同一個 Qwen3-0.6B-Base 起步,訓練 48 次更新。Qwen trace 的 calibration loss 是 0.385218,DeepSeek trace 是 0.684615,所以依照事前規則選擇前者。這個數字只衡量固定 student 在 32 題上的模仿難度;兩位 teachers 的通用能力與中間推理正確率仍未在這裡比較。
四個模型在同一份 128 題 internal development 上接受相同的生成與評分契約。
模型 答對 strict format output tokens 整批推論時間
Base 58/128 12/128 9,391 17.00 分鐘
本地 SFT control 40/128 128/128 2,024 3.89 分鐘
新訓練的 RLVR control 91/128 2/128 36,435 64.98 分鐘
Qwen-trace distilled 105/128 99/128 34,881 56.56 分鐘
這裡的 RLVR control 使用另外凍結的 20 道訓練題、每題 8 個 rollouts,並不是 Day 25 那份在 256 題開發集落選的 checkpoint,兩組分數不能直接組成成長曲線。新 control 的 evaluator correctness 很高,卻有 90 題正解要靠 last_number fallback 才能抽出,顯示模型已經離開原先要求的輸出規則。另一邊,本地 SFT control 把格式提升到 128/128,答對題數反而比 Base 少 18 題,格式和答案再一次往不同方向移動。
蒸餾模型相對 Base 有 56 題 rescue、9 題 harm,成對 bootstrap interval 是增加 26.56 到 46.88 個百分點;相對 RLVR control 也多答對 14 題。它因此通過事前凍結的晉級規則,checkpoint 重新載入後的 logits 也完全一致。證據範圍停在 teacher-covered internal development,MATH-500 維持 0 次推論。
蒸餾模型的 128 份輸出裡,有 125 份以沒有意義的 dóla 開頭;192 筆 Qwen teacher targets 從未出現這個字串,意味著蒸餾結果會有輸出異常。有些答案還會重複整段解法,或先算錯再自行改正。原因目前沒有釐清,現有紀錄也無法區分資料、tokenizer 與 checkpoint 是哪個環節出錯;此外,105/128 和這些異常同時成立。
上述過程解釋了 hard distillation 如何進行,Student 的 0.6B 參數量遠小於 teachers,能力確實被轉移到較小模型;student 本身仍是原來的 0.6B,生成契約則容許它寫出很長的軌跡。
把較複雜系統的行為壓進較單一網路,至少可一路追溯到 1991 年。AI 大宗師 Jürgen Schmidhuber 在當年的 technical report Neural Sequence Chunkers,以及隔年的正式論文 Learning Complex, Extended Sequences Using the Principle of History Compression,處理的是長序列學習。低層 recurrent predictor 已經能預測的輸入直接略過高層;未預期事件與發生時間才進入 chunker,形成較短的 history description。Chunker 學到的內部表徵再回頭訓練 automatizer,理想情況下,後者最後能自行重現前者的狀態,使 chunker 變得不再必要。
這是廣義神經網路蒸餾的重要早期形式,今天熟悉的 knowledge distillation 則有不同的發展:2006 年的 Model Compression用大型 ensemble 替大量 pseudo data 標記,再訓練較小模型模仿;2015 年 Hinton、Vinyals 與 Dean 的 Distilling the Knowledge in a Neural Network則把 teacher 的類別機率分布變成更豐富的 soft targets。到了 reasoning model,能轉移的目標又從一組機率,變成幾百甚至幾千個推理 tokens。
Reasoning trace 一旦能教會 student,就同時成為推理模型開發者需要保護的種藥資產。隱藏完整 chain-of-thought,看起來是一個直覺的防線;Trace Inversion處理的卻是更麻煩的情況。攻擊者先用自己能取得完整 traces 的 surrogate model,訓練一個 inversion model;接著把 black-box victim 的題目、答案與可選的 reasoning summary 交給它,合成一條詳細的 synthetic trace,最後拿這批文字做 student SFT。
surrogate 的完整 traces
→ 訓練 inversion model
victim 的題目+答案+可選 summary
→ synthetic reasoning trace
→ student SFT
這裡重建的是一條與公開輸出相容、而且對 student 有用的解題路徑;victim 真正的 hidden chain-of-thought 依然未知。論文在 open-weight R1 實驗裡,讓 Qwen student 使用 weak-surrogate inverted traces 後,MATH500 從只學 summary 與 answer 的 63.0% 增加到 71.8%;victim trace oracle 是 72.2%。
Trace Inversion 另造一條可用路徑,另一篇論文碰到的是明文回收;2026 年 8 月公開的 Stealing Reasoning Traces from Proprietary LLM APIs研究某些 API 為了維持多輪對話,交給 client 保存並在下一次 request 傳回的 opaque reasoning blocks。作者發現當時的 blocks 可以跨 session、user 與同一供應商的不同模型重播,於是能把強模型產生的 block 交給較弱模型解碼,也能從公開 agent logs 裡回收 reasoning 中殘留的個人資料與 credentials。
值得注意的是,這是一項已被緩解的歷史漏洞;論文測試的是 2026 年 7 月初的 API;作者在發布前完成 responsible disclosure,三家供應商收到報告後採取緩解措施,論文也明載其攻擊到了 8 月已無法用原方法重現。
本次實驗沒有逆向或抽取任何 proprietary trace,我們使用固定版本、授權公開並保存來源的 teacher data,再由 final-answer verifier 過濾後訓練 student;即使如此,dóla、長輸出與未被逐步驗證的推理依然一起進了 checkpoint,能把 58/128 推理成果提升到 105/128 的 reasoning traces,必須和 checkpoint 一樣接受來源、授權與存取管理。
我們這次把 teacher 已經產生的解題行為轉進 student 權重,卻沒有把每次回答的推論成本一起壓低。下一步要做的,會是把一部分可外部驗證的工作移出這段又長又不完全可靠的文字,交給真正會回傳結果的工具。